package ma.moliere.domaine.impl;

import java.io.Serializable;
import java.util.List;

import ma.moliere.domaine.IParametrage;
import ma.moliere.persistance.IParametragePersistance;
import ma.moliere.persistance.oe.Anneescolaire;
import ma.moliere.persistance.oe.Enseignant;
import ma.moliere.persistance.oe.Groupe;
import ma.moliere.persistance.oe.Matiere;
import ma.moliere.transverse.vo.ClasseAffichee;
import ma.moliere.transverse.vo.TarifAffiche;

import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public class ParametrageDomaineImpl implements IParametrage, Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8929925331435547932L;
	private IParametragePersistance persistance;

	@Override
	@Transactional(readOnly = false)
	public ClasseAffichee ajouterClasse(final ClasseAffichee pClasse) {
		return persistance.ajouterClasse(pClasse);
	}

	@Transactional(readOnly = false)
	@Override
	public ClasseAffichee modifierClasse(final ClasseAffichee pClasse) {
		return persistance.modifierClasse(pClasse);

	}

	@Override
	public List < ClasseAffichee > rechercherClasses() {
		return persistance.rechercherClasses();

	}

	@Override
	public ClasseAffichee rechercherClasseParId(final Long id) {
		return persistance.rechercherClasseParId(id);

	}

	public IParametragePersistance getPersistance() {
		return persistance;
	}

	public void setPersistance(final IParametragePersistance persistance) {
		this.persistance = persistance;
	}

	@Override
	public List < Anneescolaire > rechercherAnnees() {
		return persistance.rechercherAnnees();
	}

	@Override
	public void supprimerClasse(final Long id) {
		// TODO Auto-generated method stub

	}

	@Transactional(readOnly = false)
	@Override
	public void ajouterMatiere(final Matiere pMatiere) {
		persistance.ajouterMatiere(pMatiere);

	}

	@Transactional(readOnly = false)
	@Override
	public void modifierMatiere(final Matiere pMatiere) {
		persistance.modifierMatiere(pMatiere);

	}

	@Override
	public void supprimerModule(final Long id) {
		// TODO Auto-generated method stub

	}

	@Override
	public List < Matiere > rechercherModules() {
		return persistance.rechercherMatieres();
	}

	@Transactional(readOnly = false)
	@Override
	public void ajouterEnseignant(final Enseignant pEnseignant) {
		persistance.ajouterEnseignant(pEnseignant);

	}

	@Override
	public void modifierEnseignant(final Enseignant pEnseignant) {
		persistance.modifierEnseignant(pEnseignant);
	}

	@Override
	public void supprimerEnseignant(final Long id) {
		// TODO Auto-generated method stub

	}

	@Override
	public List < Enseignant > rechercherEnseignants() {
		return persistance.rechercherEnseignants();
	}

	@Override
	public Anneescolaire rechercherAnneeParId(final Long id) {
		return persistance.rechercherAnneeParId(id);
	}

	@Override
	public Anneescolaire rechercherAnneeParLibelle(final String libelle) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List < Groupe > rechercherGroupePardIdClasse(final Long idClasse) {
		// TODO Auto-generated method stub
		return persistance.rechercherGroupePardIdClasse(idClasse);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see ma.moliere.domaine.IParametrage#ajouter(ma.moliere.transverse.vo.TarifAffiche)
	 */
	@Override
	public TarifAffiche ajouter(final TarifAffiche tarif) {

		return persistance.ajouter(tarif);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see ma.moliere.domaine.IParametrage#modifier(ma.moliere.transverse.vo.TarifAffiche)
	 */
	@Override
	public TarifAffiche modifier(final TarifAffiche tarif) {
		return persistance.modifier(tarif);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see ma.moliere.domaine.IParametrage#rechercherTarifs()
	 */
	@Override
	public List < TarifAffiche > rechercherTarifs() {
		return persistance.rechercherTarifs();
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public final TarifAffiche rechercherTarif(final String classe) {
		return persistance.rechercherTarif(classe);
	}

}
